package com.jrsoft.jrcore.base

import android.os.Bundle
import me.yokeyword.fragmentation.SupportActivity

/**
 * 所属系统:  杨梅红画院移动端
 * 所属模块:  基础模块
 * 功能描述:  mvvm的基类activity
 * 创建时间: 2020/5/14 10:51
 * 维护人:  杨广
 * Copyright @ Jerrisoft 2019. All rights reserved.
 *┌──────────────────────────────────────────────────────────────┐
 *│ 此技术信息为本公司机密信息，未经本公司书面同意禁止向第三方披露．   │
 *│ 版权所有：杰人软件(深圳)有限公司                                │
 *└──────────────────────────────────────────────────────────────┘
 */
abstract class CoreActivity<VM : BaseViewModel>() : SupportActivity() {
    lateinit var mViewModel: VM
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentLayout()
        mViewModel = initVM()
        startObserve()
        initView()
        initData()
    }

    /**
     * @des { 设置布局 }
     * @author 杨广
     * @date 2020/05/14 17:18
     */
    open fun setContentLayout() {
        setContentView(getLayoutResId())
        addContent()
    }

    /**
     * @des { 获取布局id.子类设置布局用 }
     * @author 杨广
     * @date 2020/05/14 11:32
     */
    abstract fun getLayoutResId(): Int

    abstract fun addContent()

    /**
     * @des { 初始化ViewModel }
     * @author 杨广
     * @date 2020/05/14 11:32
     */
    abstract fun initVM(): VM

    /**
     * @des { 初始化视图 }
     * @author 杨广
     * @date 2020/05/14 11:32
     */
    abstract fun initView()

    /**
     * @des { 初始化数据 }
     * @author 杨广
     * @date 2020/05/14 11:32
     */
    abstract fun initData()

    /**
     * @des { 开始观察数据变化 }
     * @author 杨广
     * @date 2020/05/14 11:32
     */
    abstract fun startObserve()
}